Oculus Quest2 + VideoPlayer での問題まとめ

March 05, 2023


Oculus Quest2 でVideoPlayerを利用したときの不具合、改善点をまとめます

スキップやシークバーを実装して VideoPlayer.timereference 操作した時VideoPlayerがフリーズする

VideoPlayerをシークバーで移動や10秒スキップなど利用した時、VideoPlayerの描画が止まるorタイミングがずれる挙動が発生することがあります

しばらくしたら動き始めますがそのラグが5秒以上発生するため、スキップの挙動を実装するには一度 Stop → Prepare → Start を取るほうが安全かもしれません。 もしくは timereference を利用しない方法を試したほうが良いかもしれません

VideoPlayeable Behaviour を利用したTImeline制御で発生を確認しています。

また、別の問題として次のIssueが発生しています [ANDROID] 現在のフレームから 1 分以上離れた VIDEO PLAYER SEEK フレームを再生すると、PLAYER が頻繁にクラッシュする ※2023/1/5現在

https://issuetracker.unity3d.com/issues/android-player-often-crashes-when-playing-the-video-player-seek-frame-thats-more-than-a-minute-away-from-the-current-frame

Valkanでパフォーマンスが低下する

Android標準はValkanの利用ですがその場合VideoPlayerを利用するとパフォーマンスが大きく低下することがあります (現在利用バージョン : Unity2021.3.19f1)

ただしこれは360度動画のような非常に解像度が高い動画を再生している場合のみかもしれません。 OpenGL ES3 にするとパフォーマンスが顕著に下がるような問題は出ませんでした

OpenGL 利用時に複数のVideoPlayerを利用すると表示に不具合が出る

以下Forumで解決策が出ていました https://forum.unity.com/threads/videoplayer-android-oculus-problem-cannot-stream-2-different-files.994121/

2ストリームのVideoPlayerを再生時、UnityEditorでは問題ありませんが、Oculusでは2番めのVideoPlayerが1番目のVideoPlayerのRenderTextureを上書きするような挙動が発生。

Turn off Low Overhead Mode (GLES) on Project settings->XR Plug-in Management->Oculus

ProjectSettigns > XR Plug-in Management → Oculus から Low Overhead Mode(GLES) を無効にすることで問題がなくなりました。

Valkan利用時のパフォーマンス低下からOpenGLに変更するとハマるので注意です。

また、この設定がOFFのときに ProjectSettings → Oculus に出てくる提案事項の中に Use Low Overhead Mode と出てきますが、これをApplyすると設定がONになるため注意が必要です

54D85D73E9FEC75560F47ED91327E4A0

まとめ

Unity標準のVIdeoPlayerの利用では複雑な問題がでることがわかりました しかし普通に再生する形では問題ないかと思います。

動画中心のアプリケーションを作成する場合には他の手段をとして 外部アセットであるAVPro Unity Asset を利用するほうが良いかもしれません.. https://renderheads.com/products/avpro-video/